Individual web servers traditionally are configured with a static set of configuration information, metadata, and content in order to serve a web application. The expectation is that by the time a request for a specific application reaches a specific server, the server has already been setup to handle that request due to previous configuration steps. Accordingly, processing a request for a web application such conventional load-balanced web server cluster configurations assumes a-priori knowledge of which server(s) have been pre-configured for a given web application.
For instance, conventional techniques for activating web applications use a custom provisioning system that runs in parallel to a web server cluster. The responsibility of the custom provisioning system is to manage application-to-server configuration. In this approach, the custom provisioning system acts as a web server cluster “master” that is responsible for deploying web applications onto specific web servers. For instance, the approach may be thought of as a “push” web application deployment approach.
In environments with relatively low numbers of unique applications (e.g., a corporate environment), it may be relatively straightforward to manually configure servers and assign web applications to run on one or more of the servers. However, in hosting environments (e.g., cloud-hosting environments), the number of web applications that run on a server cluster may be orders of magnitude larger. For example, tens of thousands, hundreds of thousands, etc. of applications may run in a large-scale cloud environment. Consequently, manual configuration and assignment of web applications to servers may be logistically infeasible.